// // 全自动化构建项目需要处理的任务：
// /*
// 压缩html - gulp-htmlmin
// 复制网站图标
// 复制font文件夹
// 给css加前缀，压缩css - gulp-autoprefixer   gulp-clean-css
// 复制图片
// es6转es5，压缩 - gulp-babel@7.0.1 babel-core babel-preset-es2015 gulp-uglify
// */
// // 下载所有需要的插件：
// // npm i gulp gulp-htmlmin gulp-autoprefixer gulp-clean-css gulp-babel@7.0.1 babel-core babel-preset-es2015 gulp-uglify gulp-webserver

// // 导入gulp，并解构函数
const {src, dest, watch, series} = require('gulp')
const htmlmin = require('gulp-htmlmin')
const autoprefixer = require('gulp-autoprefixer')
const cleanCss = require('gulp-clean-css')
const babel = require('gulp-babel')
const uglify = require('gulp-uglify')
const webserver = require('gulp-webserver')

// 将所有任务定义好
// 压缩html
function compressHTML(cb){
    src('./src/*.html')
    .pipe(htmlmin({
        collapseWhitespace: true
    }))
    .pipe(dest('./dist'))
    cb()
}
// 复制网站图标
function cloneICO(cb){
    src('./src/*.ico')
    .pipe(dest('./dist'))
    cb()
}
// 复制font文件夹
function cloneFont(cb){
    src('./src/font/*.*')
    .pipe(dest('./dist/font'))
    cb()
}
// 处理css
function handlerCSS(cb){
    src('./src/css/*.css')
    .pipe(autoprefixer()) // 需要加参数
    .pipe(cleanCss())
    .pipe(dest('./dist/css'))
    cb()
}
// 复制图片
function cloneIMG(cb){
    // src('./src/images/*.*')
    src(['./src/images/*.jpg', './src/images/*.png', './src/images/*.gif'])
    .pipe(dest('./dist/images'))
    cb()
}
// 处理js
function handlerJS(cb){
    src('./src/js/*.js')
    .pipe(babel({
        presets: ['es2015']
    }))
    .pipe(uglify())
    .pipe(dest('./dist/js'))
    cb()
}
// 创建监视任务
function watchFile(cb){
    watch('./src/*.html', {
        ignoreInitial: false
    }, compressHTML)
    watch('./src/css/*.css', {
        ignoreInitial: false
    }, handlerCSS)
    watch('./src/images/*.*', {
        ignoreInitial: false
    }, cloneIMG)
    watch('./src/js/*.js', {
        ignoreInitial: false
    }, handlerJS)
    watch('./src/*.ico', {
        ignoreInitial: false
    }, cloneICO)
    watch('./src/font/*.*', {
        ignoreInitial: false
    }, cloneFont)
    cb()
}
// 使用webserver
function server(cb){
    setTimeout(function(){
        src('dist', {
            allowEmpty: true
        })
        .pipe(webserver({
            open: true,
            livereload: true,
            // directoryListing: true,
        }))
    }, 5000)
    cb()
}

// 导出任务
exports.default = series(watchFile, server)


// // 图片压缩 - gulp-imagemin
// 用cnpm下载gulp-imagemin@7
// const imagemin = require('gulp-imagemin')
// function compressIMG(cb){
//     src('./1.png')
//     .pipe(imagemin())
//     .pipe('./images')
//     cb()
// }
// exports.default = compressIMG
